.app-menu {
  display: flex;
  flex-direction: column;

  .app-menu-content {
    flex: 1;
    position: relative;

    .app-menu-content-inner {
      position: absolute;
      inset: 2px 0 2px;

      .app-menu-group-list {
        padding-top: 8px;
        padding-bottom: 100px;
      }

      .app-menu-group, .app-menu-item {
        user-select: none;
        transition: all ease 300ms;
        cursor: pointer;
        font-weight: 400;
        white-space: nowrap;
        text-overflow: ellipsis;
        overflow: hidden;
        color: plv(text-1);
        box-sizing: border-box;

        $font-size: 14px;
        $margin: 16px;
        font-size: $font-size;
        line-height: calc(#{$font-size} * 3.5);
        width: calc(100% - #{$margin});
        margin-left: calc(#{$margin} / 2);

        .app-menu-group-icon {
          font-size: 1.15em;
          color: plv(text-2);
        }

        &:hover {
          &, & .#{componentName(icon)} {
            color: plv(primary-6);
          }
        }

        &:hover {
          background-color: plv(secondary-2);
        }
      }

      .app-menu-group {
        display: flex;
        align-items: center;
        padding-left: 12px;
        margin-bottom: 2px;

        .app-menu-group-icon {
          position: relative;
          margin-right: 16px;
        }

        .app-menu-group-name {
          display: block;
          flex: 1;
          overflow: hidden;
          text-overflow: ellipsis;
          white-space: nowrap;
        }

        .app-menu-group-expander {
          box-sizing: content-box;
          padding: 0 10px;
          opacity: 1;
          transition: all ease 300ms;
          color: plv(text-4);
          display: flex;
          align-items: center;
          justify-content: center;
          font-size: 0.8em;
        }

        &[data-active=true] {
          &, & .#{componentName(icon)} {
            color: plv(primary-6);
          }
        }
      }

      .app-menu-item-list {
      }

      .app-menu-item {
        padding-left: calc(28px + 16px);

        &[data-active=true] {
          color: plv(primary-6);
          background-color: plv(secondary-2);
        }

        & + .app-menu-item {
          margin-top: 2px;
        }
      }
    }
  }
}

.app-container {
  @include sizeMixin(app-container, ()) {
    .app-menu {
      .app-menu-group, .app-menu-item {
        border-radius: $border-radius;
      }
    }
  }
}
